Why I love JavaScript
後方互換性を保っている
Webを壊さない
しかし、新しい機能の追加も積極的に議論されている
新しい機能の追加が民主的に行われている
過去のWebの歴史を反省
寡占的にならないように
特定の企業が独断・独占的にある機能を実装しないように
・仕様がさき、実装があと
他の言語では、「実装こそが、仕様である」となりがち
民主的に決められた、自然言語での仕様が先にある
それをもとに各エンジンは実装を行う
ビッグテックにより支えられている処理系もあるし
小規模な処理系もある
小規模な処理系であっても、ニッチな領域で評価され、使われることは普通にある
Wikipediaに List of JavaScript engines というページがあるくらいにはたくさんある
普段他の言語に触っている人から見て、JavaScriptランタイムが複数あって「面倒だなあ」と思うのは、ある意味自然
複数ランタイム(処理系)がある言語は珍しい
RubyやPythonも複数あるといえばあるけど、圧倒的にメインのもののシェアが大きい(という認識) あれ、意外とある…?
etc...
こんなに多数が共存しながら繁栄しているのは特別
JavaScriptは「仕様が先」だからこそ複数ランタイムが乱立しうるし、「君だけの最強ランタイムを作ろう!」という野心も成立しうる
ECMAScriptに関しては、test262というテストスイートも用意されている。これを通しさえすれば、「君だけの最強ランタイム」を作ることができる ECMAScriptの範囲外についても、wpt (web platform test) のようなテストスイートがある 「Webを壊さずに、しかし技術の発展を止めない」という人類の営みが美しい
大昔に書かれたJavaScriptは、基本的には動く
それでいて、ECMAScriptは進化し続ける
後方互換性を保ちつつ、言語としては進化し続けるという「現実味のある進化」の方向性が美しい
言語仕様自体でいえば、当然他のモダン言語のほうが整理整頓されているし、古い言語の古臭い部分を考慮せずに済む
後発言語、例えば自分が好きなRust、は当然素晴らしい言語
過去の言語の良いところを採用し、悪いところを切り捨てる
でもそれって「後だしじゃんけん」だよね
JavaScriptは、「先だしじゃんけん」だけど、新しい言語機能を貪欲に取り込み進化をしつづける